Configurable Computing Array

ABSTRACT

The present invention discloses a configurable computing array. It comprises an array of configurable computing elements and an array of configurable logic elements. Each configurable computing element comprises at least a writable-memory array, which stores at least a portion of a look-up table (LUT) for a math function.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent applicationSer. No. 15/450,049, filed Mar. 6, 2017, which is a continuation-in-partof U.S. patent application Ser. No. 15/450,017, filed Mar. 5, 2017.These patent applications claim priorities from Chinese PatentApplication No. 201610125227.8, filed Mar. 5, 2016; Chinese PatentApplication No. 201610307102.7, filed May 10, 2016, in the StateIntellectual Property Office of the People's Republic of China (CN).

This application also claims priorities from Chinese Patent ApplicationNo. 201710980620.X, filed Oct. 19, 2017; Chinese Patent Application No.201710980827.7, filed Oct. 20, 2017; Chinese Patent Application No.201710980812.0, filed Oct. 20, 2017, in the State Intellectual PropertyOffice of the People's Republic of China (CN), the disclosure of whichare incorporated herein by reference in their entireties.

BACKGROUND 1. Technical Field of the Invention

The present invention relates to the field of integrated circuit, andmore particularly to configurable gate array.

2. Prior Art

A configurable gate array is a semi-custom integrated circuit designedto be configured by a customer after manufacturing. U.S. Pat. No.4,870,302 issued to Freeman on Sep. 26, 1989 (hereinafter referred to asFreeman) discloses a configurable gate array. It contains an array ofconfigurable logic elements (also known as configurable logic blocks)and a hierarchy of configurable interconnects (also known asprogrammable interconnects) that allow the configurable logic elementsto be wired together. Each configurable logic element in the array is initself capable of realizing any one of a plurality of logic functions(e.g. shift, logic NOT, logic AND, logic OR, logic NOR, logic NAND,logic XOR, arithmetic addition “+”, arithmetic subtraction “−”, etc.)depending upon a first configuration signal. Each configurableinterconnect can selectively couple or de-couple interconnect linesdepending upon a second configuration signal.

Complex math functions are widely used in various applications. Acomplex math function has multiple independent variables and can beexpressed as a combination of basic math functions. On the other hand, abasic function has a single or few independent variables. Exemplarybasic functions include transcendental functions, such as exponentialfunction (exp), logarithmic function (log), trigonometric functions(sin, cos, tan, a tan) and others. To meet the speed requirements, manyhigh-performance applications require that these complex math functionsbe implemented in hardware. In conventional configurable gate arrays,complex math functions are implemented in fixed computing elements,which are portions of hard blocks and not configurable, i.e. thecircuits implementing these complex math functions are fixedly connectedand are not subject to change by programming. Apparently, fixedcomputing elements would limit further applications of the configurablegate array. To overcome this difficulty, the present invention expandsthe original concept of the configurable gate array by making the fixedcomputing elements configurable. In other words, besides configurablelogic elements, the configurable gate array comprises configurablecomputing elements, which can realize any one of a plurality of mathfunctions.

Objects and Advantages

It is a principle object of the present invention to extend theapplications of a configurable gate array to the field of complex mathcomputation.

It is a further object of the present invention to provide aconfigurable computing array where not only logic functions can becustomized, but also math functions.

It is a further object of the present invention to provide aconfigurable computing array with a fast computational speed.

It is a further object of the present invention to provide aconfigurable computing array with a short time-to-market and excellentmanufacturability.

In accordance with these and other objects of the present invention, thepresent invention discloses a configurable computing array.

SUMMARY OF THE INVENTION

The present invention discloses a configurable computing array. Itcomprises an array of configurable computing elements, an array ofconfigurable logic elements and an array of configurable interconnects.Each configurable computing element comprises at least a writable-memoryarray, which is electrically programmable and can be loaded with alook-up table (LUT) for a math function. Being electricallyprogrammable, the math functions that can be realized by awritable-memory array are essentially boundless.

The usage cycle of the configurable computing element comprises twostages: a configuration stage and a computation stage. In theconfiguration stage, the LUT for a desired math function is loaded intothe writable-memory array. In the computation stage, a selected portionof the LUT for the desired math function is read out from thewritable-memory array. For a rewritable-memory array, a configurablecomputing element can be re-configured to realize different mathfunctions at different time.

Besides configurable computing elements, the preferred configurablecomputing array further comprises configurable logic elements andconfigurable interconnects. During operation, a complex math function isfirst decomposed into a combination of basic math functions. Each basicmath function is realized by programming the associated configurablecomputing element. The complex math function is then realized byprogramming the appropriate configurable logic elements and configurableinterconnects.

Accordingly, the present invention discloses a configurable computingarray, comprising: an array of configurable computing elements includinga configurable computing element, wherein said configurable computingelement stores at least a portion of a look-up table (LUT) for a mathfunction; an array of configurable logic elements including aconfigurable logic element, wherein said configurable logic elementselectively realizes a logic function from a logic library; an array ofconfigurable interconnects including a configurable interconnect,wherein said configurable interconnect selectively realizes aninterconnect from an interconnect library; wherein said configurablecomputing array realizes a math function by programming said array ofconfigurable computing elements, said array of configurable logicelements and said array of configurable interconnects.

The present invention further discloses another configurable computingarray, comprising: an array of configurable computing elements includinga configurable computing element, wherein said configurable computingelement stores at least a portion of a look-up table (LUT) for a mathfunction; an array of configurable logic elements including aconfigurable logic element, wherein said configurable logic elementselectively realizes a logic function from a logic library; wherein saidconfigurable computing array realizes a math function by programmingsaid array of configurable computing elements and said array ofconfigurable logic elements.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 discloses a symbol for a preferred configurable computingelement;

FIG. 2 is a layout view of the preferred configurable computing element;

FIG. 3 discloses two usage cycles of a preferred re-configurablecomputing element;

FIG. 4A shows an interconnect library supported by a preferredconfigurable interconnect; FIG. 4B shows a logic library supported by apreferred configurable logic element;

FIG. 5 is a circuit block diagram of a first preferred configurablecomputing array;

FIG. 6 shows an instantiation of the first preferred configurablecomputing array implementing a complex math function;

FIG. 7 is a circuit block diagram of a second preferred configurablecomputing array;

FIGS. 8A-8B show two instantiations of the second preferred configurablecomputing array;

FIG. 9 is a cross-sectional view of a preferred configurablecomputing-array die.

It should be noted that all the drawings are schematic and not drawn toscale. Relative dimensions and proportions of parts of the devicestructures in the figures have been shown exaggerated or reduced in sizefor the sake of clarity and convenience in the drawings. The samereference symbols are generally used to refer to corresponding orsimilar features in the different embodiments. In the present invention,the terms “write”, “program” and “configure” are used interchangeably.The phrase “a circuit is formed on a substrate” means that the activeelements (e.g. diodes/transistors) of the circuit are formed on thesubstrate, i.e. at least a portion of the active element (e.g.channel/source/drain) is formed in the substrate. The symbol “/” means arelationship of “and” or “or”.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Those of ordinary skills in the art will realize that the followingdescription of the present invention is illustrative only and is notintended to be in any way limiting. Other embodiments of the inventionwill readily suggest themselves to such skilled persons from anexamination of the within disclosure.

Referring now to FIG. 1, a symbol for a preferred configurable computingelement 100 is shown. The input port IN includes input data 115, theoutput port OUT includes output data 135, and the configuration port CFGincludes at least a configuration signal 125. When the configurationsignal 125 is “write”, the look-up table (LUT) for a desired mathfunction is loaded into the configurable computing element 100; when theconfiguration signal 125 is “read”, the functional/derivative/othervalue of the desired math function is read out from the LUT.

FIG. 2 is a layout view of the preferred configurable computing element100. The LUT is stored in at least a writable-memory array 110. Theconfigurable computing element 100 further includes the X decoder 15 andY decoder (including read-out circuit) 17 of the writable-memory array110. The writable-memory array 110 could be a RAM array or a ROM array.Exemplary RAM includes SRAM, DRAM, etc. On the other hand, exemplary ROMincludes OTP (one-time-programmable) and MTP(multiple-time-programmable, including re-programmable), etc. Amongthem, the MTP further includes EPROM, EEPROM, flash memory, etc.

Referring now to FIG. 3, two usage cycles 620, 660 of a preferredre-configurable computing element 100 are shown. For the re-configurablecomputing element 100, the writable-memory array 110 is re-programmable.The first usage cycle 620 includes two stages: a configuration stage 610and a computation stage 630. In the configuration stage 610, the LUT fora first desired math function is loaded into the writable-memory array110. In the computation stage 630, a selected portion of the LUT for thefirst desired math function is read out from the writable-memory array110. Being re-programmable, the re-configurable computing element 100can realize different math functions during different usage cycles 620,660. During the second usage cycle 660 (including two stages 650, 670),the LUT for a second desired math function is loaded and later read out.The re-configurable computing element 100 is particularly suitable forsingle-instruction-multiple-data (SIMD)-type of data processing. Oncethe LUTs are loaded into the writable-memory arrays 110 in theconfiguration stage, a large amount of data can be fed into there-configurable computing element 100 and processed at high speed. SIMDhas many applications, e.g. vector processing in image processing,massively parallel processing in scientific computing.

Referring now to FIGS. 4A-4B, an interconnect library and a logiclibrary are shown. FIG. 4A shows the interconnect library supported by apreferred configurable interconnect 300. An interconnect library is acollection of all interconnects supported by a configurableinterconnect. This interconnect library includes the followings: a) theinterconnects 302/304 are coupled, the interconnects 306/308 arecoupled, but 302/304 are not connected with 306/308; b) theinterconnects 302/304/306/308 are all coupled; c) the interconnects306/308 are coupled, but the interconnects 302, 304 are not coupled,neither are 302, 304 connected with 306/308; d) the interconnects302/304 are coupled, but the interconnects 306, 308 are not coupled,neither are 306, 308 connected with 302/304; e) interconnects 302, 304,306, 308 are not coupled at all. As used herein, the symbol “/” betweentwo interconnects means that these two interconnects are coupled, whilethe symbol “,” between two interconnects means that these twointerconnects are not coupled. More details on the configurableinterconnects are disclosed in Freeman.

FIG. 4B shows the logic library supported by a preferred configurablelogic element 200. A logic library is a collection of all logicfunctions supported by a configurable logic element. In this preferredembodiment, the inputs A and B include input data 210, 200, and theoutput C includes the output data 230. The logic library includes thefollowing logic functions: C=A, NOT A, A shift by n bits, AND(A,B),OR(A,B), NAND(A,B), NOR(A,B), XOR(A,B), A+B, A−B. To facilitatepipelining, the configurable logic element 200 may comprise sequentiallogic such as flip-flops and registers. More details on the configurablelogic elements are disclosed in Freeman.

Referring now to FIG. 5, a first preferred configurable computing array400 is disclosed. It comprises first and second configurable slices400A, 400B. Each configurable slice (e.g. 400A) comprises a first arrayof configurable computing elements (e.g. 100AA-100AD) and a second arrayof configurable logic elements (e.g. 200AA-200AD). A configurablechannel 320 is placed between the first array of configurable computingelements (e.g. 100AA-100AD) and the second array of configurable logicelements (e.g. 200AA-200AD). The configurable channels 310, 330, 350 arealso placed between different configurable slices 300A, 300B. Theconfigurable channels 310-350 comprise an array of configurableinterconnects 300. For those skilled in the art, besides configurablechannels, sea-of-gates may also be used.

FIG. 6 discloses an instantiation of the first preferred configurablecomputing array implementing a complex math functione=a·sin(b)+c·cos(d). The configurable interconnects 300 in theconfigurable channel 310-350 use the same convention as FIG. 4A: theinterconnects with dots mean that the interconnects are connected; theinterconnects without dots mean that the interconnects are notconnected; a broken interconnect means that two broken sections aredisconnected. In this preferred implementation, the configurablecomputing element 100AA is configured to realize the function log( )whose result log(a) is sent to a first input of the configurable logicelement 200A. The configurable computing element 100AB is configured torealize the function log [sin( )], whose result log [sin(b)] is sent toa second input of the configurable logic element 200A. The configurablelogic element 200A is configured to realize arithmetic addition “+”,whose result log(a)+log [sin(b)] is sent the configurable computingelement 100BA. The configurable computing element 100BA is configured torealize the function exp( ) whose result exp{log(a)+log[sin(b)]}=a·sin(b) is sent to a first input of the configurable logicelement 200BA. Similarly, through proper configurations, the results ofthe configurable computing elements 100AC, 100AD, the configurable logicelements 200AC, and the configurable computing element 100BC can be sentto a second input of the configurable logic element 200BA. Theconfigurable logic element 200 BA is configured to realize arithmeticaddition “+”, whose result a·sin(b)+c·cos(d) is sent to the output e.Apparently, by changing its configuration, the configurable computingarray 400 can realize other complex math functions.

Referring now to FIG. 7, a second preferred configurable computing array400 is shown. Besides configurable computing elements 100A, 100B andconfigurable logic element 200A, this preferred embodiment furthercomprises a multiplier 500. The configurable channels 360-380 comprise aplurality of configurable interconnects. With the addition of themultiplier 500, the preferred configurable computing array 400 canrealize more math functions and its computational power will become morepowerful.

FIGS. 8A-8B disclose two instantiations of the second preferredconfigurable computing array 400. In the instantiation of FIG. 8A, theconfigurable computing element 100A is configured to realize thefunction exp(f), while the configurable computing element 100B isconfigured to realize the function inv(g). The configurable channel 370is configured in such a way that the outputs of 100A, 100B are fed intothe multiplier 500. The final output is then h=exp(f)*inv(g). On theother hand, in the instantiation of FIG. 8B, the configurable computingelement 100A is configured to realize the function sin(f), while theconfigurable computing element 100B is configured to realize thefunction cos(g). The configurable channel 370 is configured in such away that the outputs of 100A, 100B are fed into the configurable logicelement 200A, which is configured to realize arithmetic addition. Thefinal output is then h=sin(f)+cos(g).

Referring now to FIG. 9, a cross-sectional view of a preferredconfigurable computing-array die 400 is disclosed. It is a monolithicintegrated circuit comprising regularly placed configurable slices 400A. . . . The configurable slice 400A comprises configurable computingelement 100AA . . . and configurable logic element 200AA . . . . Thewritable-memory array 110 in the configurable computing element 100AAcomprises a first transistor 0 t 1, which is suitable for memory. Thelogic circuit in the configurable logic element 200AA comprises a secondtransistor 0 t 2, which is suitable for logic. The transistors 0 t 1, 0t 2 are both formed on a semiconductor substrate 0 and they are coupledthrough interconnects 0 i. Because the configurable computing element100AA and the configurable logic element 200AA are both based ontransistors 0 t 1, 0 t 2, they can be manufactured by standard CMOSprocess. As no new manufacturing process needs to be developed, thepreferred computing array of the present invention has a shorttime-to-market and excellent manufacturability. In addition, because thetransistor 0 t 1 is formed on a single-crystalline semiconductorsubstrate 0, the writable-memory array 110 in the configurable computingelement 100AA has a fast speed and is suitable for high-performancecomputing.

The preferred configurable computing arrays shown in the figures arefield-programmable computing array (FPCA). For an FPCA, allmanufacturing processes are finished in factory. The function of theFPCA can be electrically defined in the field of use. The concept ofFPCA can be extended to mask-programmed computing array (MPCA). For aMPCA, wafers containing the configurable computing elements and theconfigurable logic elements are prefabricated and stockpiled in factory.However, certain interconnects on these wafers are not fabricated untilthe function of the MPCA is finally defined.

While illustrative embodiments have been shown and described, it wouldbe apparent to those skilled in the art that many more modificationsthan that have been mentioned above are possible without departing fromthe inventive concepts set forth therein. The invention, therefore, isnot to be limited except in the spirit of the appended claims.

What is claimed is:
 1. A configurable computing array, comprising: anarray of configurable computing elements including a configurablecomputing element, wherein said configurable computing element stores atleast a portion of a look-up table (LUT) for a math function; an arrayof configurable logic elements including a configurable logic element,wherein said configurable logic element selectively realizes a logicfunction from a logic library; an array of configurable interconnectsincluding a configurable interconnect, wherein said configurableinterconnect selectively realizes an interconnect from an interconnectlibrary; wherein said configurable computing array realizes a mathfunction by programming said array of configurable computing elements,said array of configurable logic elements and said array of configurableinterconnects.
 2. The configurable computing array according to claim 1,wherein said configurable computing element and said configurable logicelement are both based on transistors and formed on a semiconductorsubstrate.
 3. The configurable computing array according to claim 1,wherein said configurable interconnect selectively couples saidconfigurable computing element and said configurable logic element. 4.The configurable computing array according to claim 1, wherein saidconfigurable computing element comprises a writable-memory array.
 5. Theconfigurable computing array according to claim 4, wherein saidwritable-memory array is a RAM array.
 6. The configurable computingarray according to claim 4, wherein said writable-memory array is a ROMarray.
 7. The configurable computing array according to claim 6, whereinsaid ROM array is an OTP (one-time-programmable) array.
 8. Theconfigurable computing array according to claim 6, wherein said ROMarray is an MTP (multiple-time-programmable) array.
 9. The configurablecomputing array according to claim 8, wherein said configurablecomputing element can be re-configured to realize different mathfunctions.
 10. The configurable computing array according to claim 4whose usage cycle includes a configuration stage, wherein the LUT for amath function is loaded into said writable-memory array.
 11. Theconfigurable computing array according to claim 4 whose usage cycleincludes a computation stage, wherein a selected portion of the LUT fora math function is read out from said writable-memory array.
 12. Theconfigurable computing array according to claim 1, further comprising atleast one multiplier.
 13. A configurable computing array, comprising: anarray of configurable computing elements including a configurablecomputing element, wherein said configurable computing element stores atleast a portion of a look-up table (LUT) for a math function; an arrayof configurable logic elements including a configurable logic element,wherein said configurable logic element selectively realizes a logicfunction from a logic library; wherein said configurable computing arrayrealizes a math function by programming said array of configurablecomputing elements and said array of configurable logic elements. 14.The configurable computing array according to claim 13, wherein saidconfigurable computing element and said configurable logic element areboth based on transistors and formed on a semiconductor substrate. 15.The configurable computing array according to claim 13, furthercomprising an array of configurable interconnects including aconfigurable interconnect, wherein said configurable interconnectsselectively couples said configurable computing element and saidconfigurable logic element.
 16. The configurable computing arrayaccording to claim 13, wherein said configurable computing elementcomprises a writable-memory array.
 17. The configurable computing arrayaccording to claim 16, wherein said writable-memory array isre-programmable and said configurable computing element can bere-configured to realize different math functions.
 18. The configurablecomputing array according to claim 16 whose usage cycle includes aconfiguration stage, wherein the LUT for a math function is loaded intosaid writable-memory array.
 19. The configurable computing arrayaccording to claim 16 whose usage cycle includes a computation stage,wherein a selected portion of the LUT for a math function is read outfrom said writable-memory array.
 20. The configurable computing arrayaccording to claim 13, further comprising at least one multiplier.